\chapter{Analyse de l'existant}
%\addcontentsline{toc}{chapter}{Analyse de l'existant}

\section{Logiciels utilisant METATOOL}
Actuellement un certain nombre d'autres logiciels qu'\textbf{ACoM} s'intéressent à l'étude des modes élémentaires et utilisent \textbf{METATOOL}. 
Une approche de leur interaction avec ce dernier peut être utile dans le cadre du développement du projet.

\subsection{YANAsquare}
\textbf{YANAsquare} \cite{YANA} est un logiciel libre, écrit en \textsc{JAVA}, utilisant \textbf{METATOOL} pour l'étude des voies métaboliques.
Il contient le logiciel \textbf{METATOOL} dans sa structure interne. Le rôle de \textbf{YANAsquare} est de servir de façade et de sortie à \textbf{METATOOL} tout en implémentant d'autres fonctions d'analyses du métabolisme telles que la quantification de l'activité enzymatique des réactions.
\textbf{YANAsquare} s'occupe de l'entrée des données vers \textbf{METATOOL} puis il effectue une analyse syntaxique du fichier \textit{.out} pour afficher les résultats sur une interface graphique et effectuer d'autres analyses sur ces résultats. 


\subsection{CellNetAnalyser}
\textbf{CellNetAnalyser} \cite{CellNetAnalyser} est un programme procurant tout un panel d'outils pour obtenir une analyse sur le fonctionnement cellulaire telle que l'étude du métabolisme mais aussi de la régulation et de signalisation.Ce logiciel est un paquet de \textbf{MATLAB} (écrit en \textsc{C}). 
\textbf{CellNetAnalyser} est gratuit pour une utilisation académique, mais il nécessite l'installation de \textbf{MATLAB} qui demande une licence.
La figure 3.1 montre l'architecture du paquet autour de \textbf{MATLAB}, ainsi que les différentes entrées et sorties entre programmes et les différents résultats réalisables.
Pour l'étude des modes élémentaires, \textbf{CellNetAnalyser} fait appel à \textbf{METATOOL} via le logiciel \textbf{MEX} qui sert d'interface (figure 3.1 voir encadré rouge).
\textbf{MEX} permet à \textbf{MATLAB} d'appeler tout logiciel \textsc{C} externe pour compléter les outils qu'il possède.

\image{cellnet}{L'architecture de CellNetAnalyser}{0.8}

\subsection{Traitement des résultats}

\textbf{YANAsquare} et \textbf{CellNetAnalyser} sont des logiciels desktop. 
Néanmoins ils effectuent un traitement des résultats de \textbf{METATOOL} différent de celui d'\textbf{ACoM} qui se focalise plus sur la présence de motifs communs entre modes élémentaires.

\newpage
\section{Langages et bibliothèques}
\paragraph{}
Notre projet nécessite l'utilisation d'une interface web, dans ce cadre il existe:
\begin{itemize}
	\item \textsc{mod perl} combiné avec \textsc{apache} et \textsc{CGI}, mais la technologie utilisée est à l'heure actuelle dépassée,
	\item \textsc{mod python} combiné avec \textsc{apache} et \textsc{CGI}, mais m\^eme remarque que précédemment,
	\item \textsc{CL-WHO} avec \textsc{Hunchentoot} et \textsc{ParenScript} offre un bon environnement pour le développement web,
	\item \textsc{Java} et ses \textsc{applets java} apparaissent également comme un bon choix pour le développent web,
	\item \textsc{PHP} couplé avec du \textsc{Javascript} peut aussi \^etre un choix judicieux pour une application web.
\end{itemize}
Parmi les différents choix précédemment cités, deux sortent donc du lot :\textsc{Java} et \textsc{PHP} accompagnés de leurs bibliothèques.

\paragraph{}
Le projet doit pouvoir traiter les images \textit{.svg}. D'après nos recherches il existe:
\begin{itemize}
	\item un module \textsc{perl} pour le \textsc{svg}, permettant notamment de rechercher dans le fichier \textit{.xml}, de créer des formes basiques et d'animer le \textsc{svg} \cite{ManualOfModuleSVG},
	\item en \textsc{python} il n'existe pas de module spécifique aux fichiers \textit{.svg}, pour cela il faut parser le fichier en utilisant par exemple le module \textsc{BeautifulSoup} \cite{BeautifulSoup},
	\item une bibliothèque \textsc{java} permettant de manipuler les fichiers \textit{.svg} existe, l'\textsc{API} est très fournie, cette bibliothèque se nomme \textsc{Batik SVG Toolkit} \cite{Batik},
	\item une bibliothèque \textsc{PHP} est également présente, elle semble fournir également de nombreuse méthode PEAR::Image\_Canvas \cite{PEAR}.
\end{itemize}
Dans le cas ci-présent on remarque trois langages avec leurs bibliothèques permettant d'offrir un niveau d'abstraction intéressant et de nombreuses méthodes pour manipuler les fichiers \textit{.svg}, qui sont: \textsc{Perl}, \textsc{Java} ainsi que \textsc{PHP}.  \textsc{Perl}, \textsc{Java}, \textsc{PHP}
\begin{figure}[h!]
	\begin{center}
		\begin{tabular}{|l|c|c|c|c|c|}
		\hline  											& Module Perl	& BeautifulSoup	& Batik	& Image\_Canvas	& pysvg	\\ 
		\hline \small{Génération de svg}					& Oui			& Non			& Oui	& Oui			& Oui	\\ 
		\hline \small{Gestions des évènement souris}		& Oui			& Non			& Oui	& Non			& Non	\\ 
		\hline \small{Gestions des animations}				& Oui			& Non			& Oui	& Non			& Non	\\ 
		\hline \small{Conversion en d'autres formats image}	& Non			& Non			& Oui	& Oui			& Non	\\ 
		\hline \small{Parsage du fichier XML}				& Oui			& Oui			& Oui	& Non			& Non	\\ 
		\hline \small{Utilisation du DOM}					& Oui			& Oui			& Oui	& Non			& Non	\\ 
		\hline \small{Scripting}							& Oui			& Non			& Oui	& Non			& Non	\\ 
		\hline
		\end{tabular}
	\end{center}
	\caption{Comparaison des différentes bibliothèques autour du SVG}
\end{figure}
\newpage
\paragraph{}
Enfin, durant le développement du projet, nous devrons manipuler des graphiques issus de calculs statistiques :
\begin{itemize}
	\item en java, il existe une bibliothèque manipulant les graphiques issus de calculs statistiques qui est \textsc{JGraphT} \cite{JGraphT},
	\item en python, il existe une bibliothèque similaire qui se nomme \textsc{matplotlib} \cite{matplotlib},
	\item en PHP, on trouve \textsc{Artichow}\cite{Artichow}.
\end{itemize}
Les trois bibliothèques ci\-dessus sont très proches du point de vue des fonctionnalités proposées.
\paragraph{}
Cette analyse fait ressortir \textsc{Java}, accompagné de ses bibliothèques, comme étant le plus adapté au développement du nouvel outil.
En effet en utilisant ce langage, une bibliothèque sera disponible pour manipuler le SVG et les graphes. De plus, il peut \^etre implémenté en tant qu'application web.
Pour la richesse de sa bibliothèque, dans le cadre de notre projet, nous optons donc pour l'utilisation de ce langage.
Les fonctionnalités apportées seront: la création d'image SVG interactives avec l'utilisateur, et la génération de courbes et d'histogrammes pour la partie statistique.
Un fichier \textit{.csv} sera récupérable pour stocker l'ensemble des données générées.
Ce fichier sera dans une archive \textit{.tar.bz2} afin de diminuer le poids des fichiers.

